package com.lvy.hczn.mq.rocket;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

@Data
@Configuration
@ConfigurationProperties(prefix = "rocketmq.lvy")
public class MqProperties {

    /**
     * nameServer地址
     */
    private String nameSrvAddr;

    /**
     * 生产者组名称
     */
    private String producerGroupName;

    /**
     * 生产者实例
     */
    private String producerInstanceName;

    /**
     * 事务生产者实例名称
     */
    private String transactionProducerGroupName;

    /**
     * 事务生产者实例名称
     */
    private String producerTranInstanceName;

    /**
     * 消费者组名称
     * 同一个消费组，必须保持订阅关系一致
     * 貌似是，同一个消费组中，设置不同tag时，后启动的消费者会覆盖先启动的消费者设置的tag，具体未校验
     */
    private String consumerGroupName;

    /**
     * 消费者实例名称
     */
    private String consumerInstanceName;

    /**
     * 一次最大消费多少数量消息
     */
    private int consumerBatchMaxSize;

    /**
     * 广播消费
     */
    private boolean consumerBroadcasting;

    /**
     * 启动的时候是否消费历史记录
     */
    private boolean enableHisConsumer;

    /**
     * 启动顺序消费
     */
    private boolean enableOrderConsumer;

    private List subscribe = new ArrayList<>();

    /**
     * 定时/延时消息主体
     */
    private String timeTopic;

    /**
     * 定时/延时消息组
     */
    private String timeGroupName;

    /**
     * 定时/延时消息标签
     */
//    private String timeTag;

    /**
     * 账户
     */
    private String aclAccessKey;

    /**
     * 密码
     */
    private String aclSecretKey;

    /**
     * 是否从数据库获取topic&tag
     */
    private boolean fromDataBase;

    private String unitName;
}
